//actionCeator
//引入当前action的类型
import * as cartTypes from "../Types/CartTypes"
const actionCreator = (type, payload) => ({ type, payload })

//异步action
//这个异步函数会被thunk中间件调用,并且回传dispatch
export const fetchCart = async (dispatch) => {
    // console.log(dispatch)
    //正在发起请求
    // console.log(cartTypes)
    dispatch(actionCreator(cartTypes.FETCH_CART_REQUEST))
    //发起请求,获取数据
    fetch("https://chst.vip/data/index.json")
        .then(body => body.json())
        .then(res => {
            //提交action,变更state
            //提交action需要通过dispatch来提交

            //问题1:当前的action是一个函数,而redux规定,action必须是一个对象
            //问题2:提交action需要通过dispatch来进行提交,然后更新state,目前如何获得dispatch这个方法?
            //解决方案:通过redux-thunk中间件来处理
            setTimeout(() => {
                dispatch(actionCreator(cartTypes.FETCH_CART_SUCCESS, res.data))
            }, 2000)
        })
        .catch(err => {

            //请求失败
            setTimeout(() => {
                dispatch(actionCreator(cartTypes.FETCH_CART_FAILD, err.toString()))
            }, 2000)
        })
}

